package com.such.kit.resource.util;

import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.Set;

public class OrderedProperties extends Properties {

	private static final long serialVersionUID = -4467084947314311658L;

	private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();

	public Enumeration<Object> keys() {
		return Collections.<Object> enumeration(keys);
	}

	public Object put(Object key, Object value) {
		this.keys.add(key);
		return super.put(key, value);
	}

	public Set<Object> keySet() {
		return this.keys;
	}

	public Set<String> stringPropertyNames() {
		Set<String> keySet = new LinkedHashSet<String>();
		for (Object key : this.keys) {
			keySet.add(String.valueOf(key));
		}
		return keySet;
	}

}
